﻿#ifndef UIPLUGINWIDGET_H
#define UIPLUGINWIDGET_H

#include <QListWidgetItem>

#include "StatusLightWidget.h"
#include "HourGlassWidget.h"

#include <QWidget>
#include <QStandardItemModel>
#include <QJsonObject>
#include <QJsonArray>

namespace Ui {
class UiPluginWidget;
}

class UiPluginWidget : public QWidget
{
    Q_OBJECT

public:
    explicit UiPluginWidget(QWidget *parent = nullptr);
    ~UiPluginWidget();

    // 初始化界面
    void setupUi();

    // 初始化信号连接
    void setupConnect();

private slots:
    void slotWidgetSwitch(int index);

private:

    /**
     * @brief initStatusLight 初始化状态等
     */
    void initStatusLight();

    /**
     * @brief initHourGlass 初始化沙漏
     */
    void initHourGlass();

    /**
     * @brief initListView 初始化ListView
     */
    void initListView();

    /**
     * @brief initTreeView 初始化TreeView
     */
    void initTreeView();

    /**
     * @brief initTableView 初始化TableView
     */
    void initTableView();
private:
    /**
     * @brief addTreeRow   对TreeView插入行
     * @param model        Tree的Model
     * @param parentItem   父节点，为空为顶层节点
     * @param json         数据
     */
    void addTreeRow(QStandardItemModel *model, QStandardItem      *parentItem, const QJsonObject& json);

    /**
     * @brief addTableRow 对QTableView插入行
     * @param model
     * @param json
     */
    void addTableRow(QStandardItemModel *model, const QJsonObject& json);

private:
    StatusLightWidget* statusLightWidget;

    HourGlassWidget* hourGlassWidget_;

    QListView* listView_;
    class CustomListModel *listModel_;

private:
    Ui::UiPluginWidget *ui;
};

#endif // UIPLUGINWIDGET_H
